﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;

namespace WindowsApplication1
{
    public partial class SetCellInfo : Form
    {
        
        public SetCellInfo()
        {
            InitializeComponent();
        }
        void UpData_CellVolTempMaxMin()
        {
            UInt16 VOL_LV1max = 1000;
            UInt16 VOL_LV1min = 2200;
            UInt16 VOL_LV2max = 2300;
            UInt16 VOL_LV2min = 2700;
            UInt16 VOL_LV3max = 2800;
            UInt16 VOL_LV3min = 3000;
            UInt16 VOL_LV4max = 3100;
            UInt16 VOL_LV4min = 4900;
            UInt16 TEMP_LV1max = 40;
            UInt16 TEMP_LV1min = 0;
            UInt16 TEMP_LV2max = 80;
            UInt16 TEMP_LV2min = 41;
            UInt16 TEMP_LV3max = 81;
            UInt16 TEMP_LV3min = 80;
            UInt16 TEMP_LV4max = 121;
            UInt16 TEMP_LV4min = 165;
            UInt16 temp_max, temp_min;
            temp_max = (UInt16)(1000 * Convert.ToDouble(cellvoltmax1.Text));
            temp_min = (UInt16)(1000 * Convert.ToDouble(cellvoltmin1.Text));
            if (temp_max > 5100 || temp_min > 5100)
            {
                cellvoltmax1.Focus();
                label123.Text = "阈值需在5V内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max)
            {
                cellvoltmax1.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            VOL_LV1max = (UInt16)temp_max;
            VOL_LV1min = (UInt16)temp_min;

            temp_max = (UInt16)(1000 * Convert.ToDouble(cellvoltmax2.Text));
            temp_min = (UInt16)(1000 * Convert.ToDouble(cellvoltmin2.Text));
            if (temp_max > 5100 || temp_min > 5100)
            {
                cellvoltmax2.Focus();
                label123.Text = "阈值需在5V内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < VOL_LV1max) && (temp_min > VOL_LV1min))
            {
                cellvoltmax2.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            VOL_LV2max = (UInt16)temp_max;
            VOL_LV2min = (UInt16)temp_min;

            temp_max = (UInt16)(1000 * Convert.ToDouble(cellvoltmax3.Text));
            temp_min = (UInt16)(1000 * Convert.ToDouble(cellvoltmin3.Text));
            if (temp_max > 5100 || temp_min > 5100)
            {
                cellvoltmax3.Focus();
                label123.Text = "阈值需在5V内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < VOL_LV2max) && (temp_min > VOL_LV2min))
            {
                cellvoltmax3.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            VOL_LV3max = (UInt16)temp_max;
            VOL_LV3min = (UInt16)temp_min;

            temp_min = (UInt16)(1000 * Convert.ToDouble(cellvoltmin4.Text));
            temp_max = (UInt16)(1000 * Convert.ToDouble(cellvoltmax4.Text));
            if (temp_max > 5100 || temp_min > 5100)
            {
                cellvoltmax4.Focus();
                label123.Text = "阈值需在5V内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < VOL_LV3max) && (temp_min > VOL_LV3min))
            {
                cellvoltmax4.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            VOL_LV4max = (UInt16)temp_max;
            VOL_LV4min = (UInt16)temp_min;
            ////////////////////////////////////////////////////////////////////////////
            temp_max = (UInt16)(Convert.ToDouble(celltempmax1.Text) + 40);
            temp_min = (UInt16)(Convert.ToDouble(celltempmin1.Text) + 40);
            if (temp_max > 125 || temp_min > 125)
            {
                celltempmax1.Focus();
                label123.Text = "阈值需在125摄氏度内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max)
            {
                celltempmax1.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            TEMP_LV1max = (UInt16)(temp_max);
            TEMP_LV1min = (UInt16)(temp_min);


            temp_max = (UInt16)(Convert.ToDouble(celltempmax2.Text) + 40);
            temp_min = (UInt16)(Convert.ToDouble(celltempmin2.Text) + 40);
            if (temp_max > 170 || temp_min > 170)
            {
                celltempmax2.Focus();
                label123.Text = "阈值需在125摄氏度内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < TEMP_LV1max) && (temp_min > TEMP_LV1min))
            {
                celltempmax2.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            TEMP_LV2max = (UInt16)(temp_max);
            TEMP_LV2min = (UInt16)(temp_min);


            temp_max = (UInt16)(Convert.ToDouble(celltempmax3.Text) + 40);
            temp_min = (UInt16)(Convert.ToDouble(celltempmin3.Text) + 40);
            if (temp_max > 170 || temp_min > 170)
            {
                celltempmax3.Focus();
                label123.Text = "阈值需在125摄氏度内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < TEMP_LV2max) && (temp_min > TEMP_LV2min))
            {
                celltempmax3.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            TEMP_LV3max = (UInt16)(temp_max);
            TEMP_LV3min = (UInt16)(temp_min);

            temp_max = (UInt16)(Convert.ToDouble(celltempmax4.Text) + 40);
            temp_min = (UInt16)(Convert.ToDouble(celltempmin4.Text) + 40);
            if (temp_max > 170 || temp_min > 170)
            {
                celltempmax4.Focus();
                label123.Text = "阈值需在125摄氏度内";
                label123.ForeColor = Color.Red;
                return;
            }
            if (temp_min >= temp_max || (temp_min < TEMP_LV3max) && (temp_min > TEMP_LV3min))
            {
                celltempmax4.Focus();
                label123.Text = "设置失败\r阈值范围不可交叉";
                label123.ForeColor = Color.Red;
                return;
            }
            TEMP_LV4max = (UInt16)(temp_max);
            TEMP_LV4min = (UInt16)(temp_min);

            label123.Text = "阈值设置成功";
            label123.ForeColor = Color.Black;
            main_form f1 = (main_form)this.Owner;//将本窗体的拥有者强制设为Form1类的实例f1
            f1.Change_V1Max(VOL_LV1max);
            f1.Change_V1Min(VOL_LV1min);
            f1.Change_V2Max(VOL_LV2max);
            f1.Change_V2Min(VOL_LV2min);
            f1.Change_V3Max(VOL_LV3max);
            f1.Change_V3Min(VOL_LV3min);
            f1.Change_V4Max(VOL_LV4max);
            f1.Change_V4Min(VOL_LV4min);
            f1.Change_T1Max(TEMP_LV1max);
            f1.Change_T1Min(TEMP_LV1min);
            f1.Change_T2Max(TEMP_LV2max);
            f1.Change_T2Min(TEMP_LV2min);
            f1.Change_T3Max(TEMP_LV3max);
            f1.Change_T3Min(TEMP_LV3min);
            f1.Change_T4Max(TEMP_LV4max);
            f1.Change_T4Min(TEMP_LV4min);
            this.Close();
        }
        /// <summary>
        /// 设置值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            UpData_CellVolTempMaxMin();
        }
        /// <summary>
        /// 加载时,先获取值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SetCellInfo_Load(object sender, EventArgs e)
        {
            main_form f1 = (main_form)this.Owner;//将本窗体的拥有者强制设为Form1类的实例f1
            cellvoltmax1.Text = ((float)f1.Change_V1Max() / 1000).ToString("0.000");
            cellvoltmin1.Text = ((float)f1.Change_V1Min() / 1000).ToString("0.000");
            cellvoltmax2.Text = ((float)f1.Change_V2Max() / 1000).ToString("0.000");
            cellvoltmin2.Text = ((float)f1.Change_V2Min() / 1000).ToString("0.000");
            cellvoltmax3.Text = ((float)f1.Change_V3Max() / 1000).ToString("0.000");
            cellvoltmin3.Text = ((float)f1.Change_V3Min() / 1000).ToString("0.000");
            cellvoltmax4.Text = ((float)f1.Change_V4Max() / 1000).ToString("0.000");
            cellvoltmin4.Text = ((float)f1.Change_V4Min() / 1000).ToString("0.000");
            celltempmax1.Text = (f1.Change_T1Max() - 40).ToString();
            celltempmin1.Text = (f1.Change_T1Min() - 40).ToString();
            celltempmax2.Text = (f1.Change_T2Max() - 40).ToString();
            celltempmin2.Text = (f1.Change_T2Min() - 40).ToString();
            celltempmax3.Text = (f1.Change_T3Max() - 40).ToString();
            celltempmin3.Text = (f1.Change_T3Min() - 40).ToString();
            celltempmax4.Text = (f1.Change_T4Max() - 40).ToString();
            celltempmin4.Text = (f1.Change_T4Min() - 40).ToString();
    
        }
    }
}
